// 语法: myInstanceOf(obj, Type)
// 功能: 判断obj是否是Type类型的实例
// 实现: Type的原型对象是否是obj的原型链上的某个对象, 如果是返回tru, 否则返回false

/**
 * 
 * @param {Ojbect} obj 
 * @param {Function} Fn 构造函数
 */
export function myInstanceOf(obj, Fn) {
  // 1. 获取函数的显示原型
  let prototype = Fn.prototype;
  // 2. 获取 obj 的隐式原型对象
  let proto = obj.__proto__;
  // 3. 遍历原型链
  while (proto) {
    // 检测原型对象是否相等
    if (prototype === proto) {
      return true;
    }
    // 如果相等，则取上一个原型对象
    proto = proto.__proto__;
  }
  return false
}